package com.suneee.role.service;

import java.util.List;

import com.suneee.context.page.Page;
import com.suneee.role.bean.RoleDto;
import com.suneee.role.entity.Role;

public interface RoleService {

	/**
	 * 添加角色
	 * @param role
	 */
	public void add(Role role);
	
	/**
	 * 角色授权
	 * @param roleId
	 * @param permissionIdList
	 */
	public void authorizedPermission(Integer roleId,List<Integer> permissionIdList);
	
	/**
	 * 角色删除
	 * @param role
	 */
	public void delete(Integer roleId);
	
	/**
	 * 角色更新
	 * @param role
	 */
	public void update(Role role);
	
	/**
	 * 取消授权
	 * @param roleId
	 * @param permissionIdList
	 */
	public void cancelAuthorizedPermission(Integer roleId,List<Integer> permissionIdList);
	
	/**
	 * 角色列表
	 * @param dto
	 * @return
	 */
	public Page<Role> roleList(RoleDto dto);
	
	/**
	 * 角色详情
	 * @param roleId
	 * @return
	 */
	public Role roleDetail(Integer roleId);
	
	/**
	 * 角色权限修改
	 * @param roleId
	 * @param permissionIdList
	 */
	public void permissionModify(Integer roleId,List<Integer> permissionIdList);
	
	/**
	 * 为管理员添加角色
	 * @param adminId
	 * @param roleIdList
	 */
	public void addAdminRole(Integer adminId,List<Integer> roleIdList);
	
	/**
	 * 取消管理员指定角色
	 * @param adminId
	 * @param roleIdList
	 */
	public void cancelAdminRole(Integer adminId,List<Integer> roleIdList);
	
	/**
	 * 更新管理员拥有的角色
	 * @param adminId
	 * @param roleIdList
	 */
	public void updateAdminRole(Integer adminId,List<Integer> roleIdList);
	
	/**
	 * 获得管理员拥有的全部角色
	 * @param adminId
	 * @return
	 */
	public List<Role> adminRoleList(Integer adminId,Boolean flag);
	
	/**
	 * 添加角色同时授权
	 * @param role
	 * @param permissionIdList
	 */
	public void addRole(Role role,List<Integer> permissionIdList);
	
	/**
	 * 得到全部角色
	 * @param dto
	 * @return
	 */
	public List<Role> roleListResult(RoleDto dto);
	
	/**
	 * 获得所有公共角色
	 * @return
	 */
	public List<Role> publicRoles();
}
